﻿/*
 * Written by Dr. John Tunnicliffe of Decision Analytics, May 2015
 * eMail: john@decision-analytics.co.uk 
 * http://www.decision-analytics.co.uk/
 * https://www.linkedin.com/in/drjohntunnicliffe
 */

using System;

namespace AmoExtensions
{
    public interface IAmoServer 
    {
        bool Connected { get; }
        string Name { get; }
        string ServerMode { get; }

        void ClearCaptureLog();
        bool Connect(string serverName);
        Microsoft.AnalysisServices.Cube Cube(string databaseNameOrId, string cubeNameOrId);
        Microsoft.AnalysisServices.Database Database(string databaseNameOrId);
        void ExecuteCaptureLog(bool transactional, bool parallel);
        void ExecuteCaptureLog(bool transactional, bool parallel, bool processAffected);
        Microsoft.AnalysisServices.MeasureGroup MeasureGroup(string databaseNameOrId, string cubeNameOrId, string measureGroupNameOrId);
        void StartCaptureLog();
        bool DeployDatabase(string fullPathToAsDatabaseDefinition, string newSsasDatabaseName, string connectionStringForCubeToSourceDataMart);
        bool DeployDatabase(string fullPathToAsDatabaseDefinition, string newSsasDatabaseName);
        void UpdateCube(string databaseNameOrId, string cubeNameOrId);
        bool DropDatabase(string SsasDatabaseName);
        void ProcessDatabase(string SsasDatabaseName);
        void Dispose();
    }
}
